package com.carb.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.carb.dto.ProjectSalesDTO;
import com.carb.dto.ProjectStatisticsDTO;
import com.carb.entity.Project;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务项目管理 Mapper 接口
 * </p>
 *
 * @author XuChaoyang
 * @since 2025-01-18
 */
public interface ProjectMapper extends BaseMapper<Project> {

    /**
     * 根据服务项目名称，得到服务项目id集合
     * @param projectName 服务项目名称
     * @param projectTypeId 服务项目类型id
     * @return 服务项目id集合
     */
    List<Long> getProjectIdsByProjectNameOrType(String projectName, Long projectTypeId);

    /**
     * 查询服务项目排名前十的业务
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return 服务项目排名Top10的业务
     */
    List<ProjectSalesDTO> getProjectTop10(LocalDateTime beginTime, LocalDateTime endTime);

    /**
     * 根据服务项目ids得到id-name的Map
     * @param projectIds 服务项目id集合
     * @return Map-List
     */
    List<Map<String, Object>> getProjectNamesByIds(List<Long> projectIds);

    /**
     * 根据服务项目id查询服务项目统计
     * @return 销售总额、销售总数、平均服务时长、平均评分
     */
    ProjectStatisticsDTO getProjectStatistics(Long projectId);

}
